devtools::install_github("vntborgesjr/distanceMonitoraflorestal")
Downloading GitHub repo vntborgesjr/distanceMonitoraflorestal@HEAD
── R CMD build ──────────────────────────────────────────────────
✔ checking for file 'C:\Users\lufus\AppData\Local\Temp\RtmpcBAPTC\remotes54bc27022b3\vntborgesjr-distanceMonitoraflorestal-498e1ef/DESCRIPTION'
─ preparing 'distanceMonitoraflorestal':
checking DESCRIPTION meta-information ...
checking DESCRIPTION meta-information ...
✔ checking DESCRIPTION meta-information
─ checking for LF line-endings in source and make files and shell scripts
─ checking for empty or unneeded directories
─ building 'distanceMonitoraflorestal_0.0.0.9000.tar.gz'
Warning in utils::tar(filepath, pkgname, compression = compression, compression_level = 9L, :
Warning in utils::tar(filepath, pkgname, compression = compression, compression_level = 9L, :
storing paths of more than 100 bytes is not portable:
'distanceMonitoraflorestal/vignettes/Ajuste-dos-modelos-fluxo3-distancias-agrupadas-com-repeticoes.Rmd'
Warning in utils::tar(filepath, pkgname, compression = compression, compression_level = 9L, :
storing paths of more than 100 bytes is not portable:
'distanceMonitoraflorestal/vignettes/Ajuste-dos-modelos-fluxo4-amostragem-por-distancia-com-multiplas-covariaveis.Rmd'
Warning in utils::tar(filepath, pkgname, compression = compression, compression_level = 9L, :
storing paths of more than 100 bytes is not portable:
'distanceMonitoraflorestal/vignettes/Ajuste-dos-modelos-fluxo5-amostragem-por-distancia-estratificada-por-unidade-de-conservacao.Rmd'
Warning in utils::tar(filepath, pkgname, compression = compression, compression_level = 9L, :
storing paths of more than 100 bytes is not portable:
'distanceMonitoraflorestal/vignettes/Ajuste-dos-modelos-fluxo6-amostragem-por-distancia-estratificada-por-ano.Rmd'
Installing package into ‘C:/Users/lufus/AppData/Local/R/win-library/4.3’
(as ‘lib’ is unspecified)
* installing *source* package 'distanceMonitoraflorestal' ...
** using staged installation
** R
** data
*** moving datasets to lazyload DB
** inst
** byte-compile and prepare package for lazy loading
** help
*** installing help indices
** building package indices
** installing vignettes
** testing if installed package can be loaded from temporary location
** testing if installed package can be loaded from final location
** testing if installed package keeps a record of temporary installation path
* DONE (distanceMonitoraflorestal)
#
library(distanceMonitoraflorestal)
# filtrar dados das cutias para as quatro UCS onde ocorre:
coata <- filtrar_dados(
nome_sps = "ateles_marginatus",
validacao_obs = "especie"
)
coata_distance <- transformar_dados_formato_Distance(
coata,
amostras_repetidas = TRUE)
coata_distance
Plotando o histograma para os dados globais.
coata_distance |>
tidyr::drop_na(distance) |>
plotar_distribuicao_distancia_interativo(largura_caixa = 1)
Registered S3 method overwritten by 'data.table':
method from
print.data.table
Warning: Continuous y aesthetic
ℹ did you forget `aes(group = ...)`?
# ajustando a função de detecção half-normal para um truncamento de 5% dos dados
coata_distance_hn <- coata_distance |>
ajustar_modelos_Distance(
funcao_chave = "hn",
truncamento = "5%")
Fitting half-normal key function
AIC= 483.904
Starting AIC adjustment term selection.
Fitting half-normal key function
AIC= 483.904
Fitting half-normal key function with cosine(2) adjustments
Warning: Detection function is not strictly monotonic!AIC= 478.332
Fitting half-normal key function with cosine(2,3) adjustments
AIC= 502.836
Half-normal key function with cosine(2) adjustments selected.
Warning: Detection function is not strictly monotonic!Starting AIC adjustment term selection.
Fitting half-normal key function
AIC= 483.904
Fitting half-normal key function with Hermite(4) adjustments
AIC= 485.867
Half-normal key function selected.
coata_distance_hn$`Sem termo`
Distance sampling analysis object
Detection function:
Half-normal key function
Estimated abundance in covered region: 98.73503
# ajustando a função de detecção half-normal para um truncamento de 5% dos dados
coata_distance_hn_size <- coata_distance |>
ajustar_modelos_Distance(
funcao_chave = "hn",
truncamento = "5%",
formula = ~size)
Fitting half-normal key function
AIC= 485.86
# ajustando a função de detecção hazard-rate para um truncamento de 5% dos dados
coata_distance_hr <- coata_distance |>
ajustar_modelos_Distance(
funcao_chave = "hr",
truncamento = "5%")
Fitting hazard-rate key function
Warning: Estimated hazard-rate scale parameter close to 0 (on log scale). Possible problem in data (e.g., spike near zero distance).AIC= 476.736
Warning: Estimated hazard-rate scale parameter close to 0 (on log scale). Possible problem in data (e.g., spike near zero distance).Starting AIC adjustment term selection.
Fitting hazard-rate key function
Warning: Estimated hazard-rate scale parameter close to 0 (on log scale). Possible problem in data (e.g., spike near zero distance).AIC= 476.736
Fitting hazard-rate key function with cosine(2) adjustments
Warning: Estimated hazard-rate scale parameter close to 0 (on log scale). Possible problem in data (e.g., spike near zero distance).Warning: Model fitting did not converge. Try different initial values or different model
Model failed to converge.
Hazard-rate key function selected.
Warning: Estimated hazard-rate scale parameter close to 0 (on log scale). Possible problem in data (e.g., spike near zero distance).Starting AIC adjustment term selection.
Fitting hazard-rate key function
Warning: Estimated hazard-rate scale parameter close to 0 (on log scale). Possible problem in data (e.g., spike near zero distance).AIC= 476.736
Fitting hazard-rate key function with simple polynomial(4) adjustments
Warning: Estimated hazard-rate scale parameter close to 0 (on log scale). Possible problem in data (e.g., spike near zero distance).Warning: Model fitting did not converge. Try different initial values or different model
Model failed to converge.
Hazard-rate key function selected.
Warning: Estimated hazard-rate scale parameter close to 0 (on log scale). Possible problem in data (e.g., spike near zero distance).
coata_distance_hr$`Sem termo`
Distance sampling analysis object
Detection function:
Hazard-rate key function
Estimated abundance in covered region: 219.1632
# ajustando a função de detecção hazard-rate para um truncamento de 5% dos dados
coata_distance_hr_size <- coata_distance |>
ajustar_modelos_Distance(
funcao_chave = "hr",
truncamento = "5%",
formula = ~size)
Fitting hazard-rate key function
Warning: Estimated hazard-rate scale parameter close to 0 (on log scale). Possible problem in data (e.g., spike near zero distance).AIC= 467.848
Warning: Estimated hazard-rate scale parameter close to 0 (on log scale). Possible problem in data (e.g., spike near zero distance).
melhor_modelo_coata <- selecionar_funcao_deteccao_termo_ajuste(
coata_distance_hn$`Sem termo`,
coata_distance_hn_size,
coata_distance_hr$`Sem termo`,
coata_distance_hr_size
)
melhor_modelo_coata
modelos_coata <- gerar_lista_modelos_selecionados(
coata_distance_hr_size,
coata_distance_hr$`Sem termo`,
coata_distance_hn$`Sem termo`,
coata_distance_hn_size,
nome_modelos_selecionados = melhor_modelo_coata
)
plotar_funcao_deteccao_modelos_selecionados(modelos_coata)
$`Hazard-rate`
NULL
$`Hazard-rate`
NULL
$`Half-normal`
NULL
$`Half-normal`
NULL
#criar uma lista com os modelos selecionados, na ordem de seleção
testar_bondade_ajuste(
modelos_coata,
plot = TRUE,
chisq = FALSE,
)
NA
Aqui são gerados Q-Q plots que permitem avaliar a qualidade do ajuste dos modelos. E também uma tabela com os resultados do Carmér-von Mises, onde W é o valor do teste e p seu valor de significância. Nesse caso, quanto maior o valor de p, melhor o ajuste do modelo.
Aqui, são resumidos os dados de taxa de encontro, abundância e densidade em três tabelas.
gerar_resultados_Distance(
dados = modelos_coata,
resultado_selecao_modelos = melhor_modelo_coata,
tipo_de_resultado = "area_estudo",
estratificacao = TRUE
)
gerar_resultados_Distance(
dados = modelos_coata,
resultado_selecao_modelos = melhor_modelo_coata,
tipo_de_resultado = "abundancia",
estratificacao = TRUE
)
NA
gerar_resultados_Distance(
dados = modelos_coata,
resultado_selecao_modelos = melhor_modelo_coata,
tipo_de_resultado = "densidade",
estratificacao = TRUE
)
NA
A redução no tamanho amostral geralmente faz com que os modelos para os dados globais tenham um ajuste melhor que os modelos ajustados aos estratos. Entretanto, para os dados do Monitora, considerando alguns ruídos amostrais sobre a distribuição dos dados, o excesso de repetições, resultados melhores de ajuste têm sido obtidos para conjutnos de dados menores.
Nas análises anteriores, os parâmetros de ajuste dos modelos e valores de AIC foram gerados somente para os dados globais. Porém, as estimativas relacionadas a área de estudo, abundância e densidade, foram geradas para cada estrato.
Um critério para avaliar se o ajuste das funções para os dados estratificados foi melhor que para os dados globais é a comparação do somatório dos valores de AIC para cada estrato com o valor de AIC do modelo global. Se a soma dos valores de AIC dos estratos for menor que o AIC global, significa que o ajuste foi melhor para os dados estratificados.
Assim, escolhemos um dos modelos testados anteriormente para os dados globais, que foi o Half-normal. Escolhemos o segundo melhor modelo porque consideramos que o ajuste do Hazard-rate, apesar de apresentar os melhores valores de AIC e teste de ajuste de bondade, foi sensível ao pico de observações próximo a zero, substimando as estimativas de probabilidade de detecção. Assim, vamos comparar o AIC global para o modelo do tipo Half-normal com os AICs das funções ajustadas para os dados de cada Unidade de Conservação.
0.1.2.0.5.1.1 Dados Globais
# ajustando a função de detecção half-normal para um truncamento de 10% dos dados
cutias_distance_hn <- cutias_distance |>
ajustar_modelos_Distance(
funcao_chave = "hn",
termos_ajuste = "cos",
truncamento = "10%")
0.1.2.0.5.1.2 Resex Tapajós-Arapiuns
# ajustando a função de detecção half-normal para um truncamento de 10% dos dados
cutias_tap_distance_hn <- cutias_tap_distance |>
ajustar_modelos_Distance(
funcao_chave = "hn",
termos_ajuste = "cos",
truncamento = "10%")
0.1.2.0.5.1.3 Resex Tapajós-Arapiuns
# ajustando a função de detecção half-normal para um truncamento de 10% dos dados
cutias_tap_distance_hn <- cutias_tap_distance |>
ajustar_modelos_Distance(
funcao_chave = "hn",
termos_ajuste = "cos",
truncamento = "10%")
0.1.2.0.5.1.4 Parna Serra do Pardo
# ajustando a função de detecção half-normal para um truncamento de 10% dos dados
cutias_par_distance_hn <- cutias_par_distance |>
ajustar_modelos_Distance(
funcao_chave = "hn",
termos_ajuste = "cos",
truncamento = "10%")
0.1.2.0.5.1.5 Esec da Terra do Meio
# ajustando a função de detecção half-normal para um truncamento de 10% dos dados
cutias_ter_distance_hn <- cutias_ter_distance |>
ajustar_modelos_Distance(
funcao_chave = "hn",
termos_ajuste = "cos",
truncamento = "10%")
0.1.2.0.5.1.6 Resex Riozinho do Anfrísio
# ajustando a função de detecção half-normal para um truncamento de 10% dos dados
cutias_anf_distance_hn <- cutias_anf_distance |>
ajustar_modelos_Distance(
funcao_chave = "hn",
termos_ajuste = "cos",
truncamento = "10%")
modelo_cutias_estrat <- comparar_aic_modelo_estratificado(
cutias_distance_hn,
cutias_tap_distance_hn,
cutias_par_distance_hn,
cutias_ter_distance_hn,
cutias_anf_distance_hn,
nome_modelos = c(
"Global",
"Resex Tapajós-Arapiuns",
"Parna Serra do Prado",
"Esec da Terra do Meio",
"Resex do Riozinho do Anfrísio"
)
)
modelo_cutias_estrat
modelos_cutias_estrat <- gerar_lista_modelos_selecionados(
cutias_distance_hn,
cutias_tap_distance_hn,
cutias_par_distance_hn,
cutias_ter_distance_hn,
cutias_anf_distance_hn,
nome_modelos_selecionados = modelo_cutias_estrat
)
plotar_funcao_deteccao_modelos_selecionados(modelos_cutias_estrat)
Para obter as estimativas anuais de densidade continuaremos utilizando a abordagem do Fluxo 2, com amostragens sem repetição.
Aqui vamos trabalhar com os dados filtrados, sem repetições. O número de observações total foi de 55.
cutias_year <- filtrar_dados(
nome_ucs = "resex_tapajos_arapiuns",
nome_sps = "dasyprocta_croconota",
validacao_obs = "especie"
)
cutias_year_distance <- transformar_dados_formato_Distance(
cutias_year,
amostras_repetidas = FALSE)
cutias_year_distance
Plotando o histograma para os dados globais.
cutias_year_distance |>
tidyr::drop_na(distance) |>
plotar_distribuicao_distancia_interativo(largura_caixa = 1)
Plotando o histograma para cada ano.
0.1.3.1.1.2.1 2014
cutia_2014 <- cutias_year_distance |>
dplyr::filter(year == 2014)
cutia_2014 |>
plotar_distribuicao_distancia_interativo(largura_caixa = 1)
0.1.3.1.1.2.2 **2015*
cutia_2015 <- cutias_year_distance |>
dplyr::filter(year == 2015)
cutia_2015 |>
plotar_distribuicao_distancia_interativo(largura_caixa = 1)
0.1.3.1.1.2.3 2016
cutia_2016 <- cutias_year_distance |>
dplyr::filter(year == 2016)
cutia_2016 |>
plotar_distribuicao_distancia_interativo(largura_caixa = 1)
0.1.3.1.1.2.4 2017
cutia_2017 <- cutias_year_distance |>
dplyr::filter(year == 2017)
cutia_2017 |>
tidyr::drop_na(distance) |>
plotar_distribuicao_distancia_interativo(largura_caixa = 1)
0.1.3.1.1.2.5 2018
cutia_2018 <- cutias_year_distance |>
dplyr::filter(year == 2018)
cutia_2018 |>
tidyr::drop_na(distance) |>
plotar_distribuicao_distancia_interativo(largura_caixa = 1)
0.1.3.1.1.2.6 2019
cutia_2019 <- cutias_year_distance |>
dplyr::filter(year == 2019)
cutia_2019 |>
tidyr::drop_na(distance) |>
plotar_distribuicao_distancia_interativo(largura_caixa = 1)
0.1.3.1.1.2.7 2020
cutia_2020 <- cutias_year_distance |>
dplyr::filter(year == 2020)
cutia_2020|>
tidyr::drop_na(distance) |>
plotar_distribuicao_distancia_interativo(largura_caixa = 1)
0.1.3.1.1.2.8 2021
cutia_2021 <- cutias_year_distance |>
dplyr::filter(year == 2021)
cutia_2021 |>
tidyr::drop_na(distance) |>
plotar_distribuicao_distancia_interativo(largura_caixa = 1)
Para ajustar os modelos aos dados globais e estratificados, mantivemos a mesma distância de truncamento para os dados das cutias na Resex Tapajós-Arapiuns, de 10%, uma vez que a distrbuição dos dados é semelhante tanto nos dados globais como nas UCs analisadas.
# ajustando a função de detecção uniforme para um truncamento de 10% dos dados
cutias_distance_unif_year <- cutias_year_distance |>
dplyr::filter(year != 2014) |>
dplyr::mutate(Region.Label = year) |>
ajustar_modelos_Distance(
funcao_chave = "unif",
truncamento = "10%")
# ajustando a função de detecção half-normal para um truncamento de 10% dos dados
cutias_distance_hn_year <- cutias_year_distance |>
dplyr::filter(year != 2014) |>
dplyr::mutate(Region.Label = year) |>
ajustar_modelos_Distance(
funcao_chave = "hn",
truncamento = "10%")
# ajustando a função de detecção hazard-rate para um truncamento de 10% dos dados
cutias_distance_hr_year <- cutias_year_distance |>
dplyr::filter(year != 2014) |>
dplyr::mutate(Region.Label = year) |>
ajustar_modelos_Distance(
funcao_chave = "hr",
truncamento = "10%")
melhor_modelo_cutias_year <- selecionar_funcao_deteccao_termo_ajuste(
cutias_distance_unif_year$Cosseno,
cutias_distance_unif_year$`Polinomial simples`,
cutias_distance_hn_year$`Sem termo`,
cutias_distance_hn_year$Cosseno,
cutias_distance_hn_year$`Hermite polinomial`,
cutias_distance_hr_year$`Sem termo`,
cutias_distance_hr_year$Cosseno,
cutias_distance_hr_year$`Polinomial simples`
)
melhor_modelo_cutias_year
modelos_cutias_year <- gerar_lista_modelos_selecionados(
cutias_distance_hn_year$Cosseno,
cutias_distance_hr_year$`Sem termo`,
cutias_distance_unif_year$Cosseno,
cutias_distance_unif_year$`Polinomial simples`,
cutias_distance_hn_year$`Sem termo`,
nome_modelos_selecionados = melhor_modelo_cutias_year
)
plotar_funcao_deteccao_modelos_selecionados(modelos_cutias_year)
#criar uma lista com os modelos selecionados, na ordem de seleção
testar_bondade_ajuste(
modelos_cutias_year,
plot = TRUE,
chisq = FALSE,
)
Aqui são gerados Q-Q plots que permitem avaliar a qualidade do ajuste dos modelos. E também uma tabela com os resultados do Carmér-von Mises, onde W é o valor do teste e p seu valor de significância. Nesse caso, quanto maior o valor de p, melhor o ajuste do modelo.
Aqui, são resumidos os dados de taxa de encontro, abundância e densidade em três tabelas.
gerar_resultados_Distance(
dados = modelos_cutias_year,
resultado_selecao_modelos = melhor_modelo_cutias_year,
tipo_de_resultado = "area_estudo",
estratificacao = TRUE
)
resultado_abundancia <-
gerar_resultados_Distance(
dados = modelos_cutias_year,
resultado_selecao_modelos = melhor_modelo_cutias_year,
tipo_de_resultado = "abundancia",
estratificacao = TRUE
)
resultado_abundancia
resultado_abundancia |>
dplyr::mutate(ano = as.integer(Regiao)) |>
dplyr::group_by(ano) |>
dplyr::summarise(n = sum(`Abundancia estimada`)) |>
ggplot2::ggplot() +
ggplot2::aes(
x = ano,
y = n
) +
ggplot2::geom_line() +
ggplot2::theme_minimal()
resultados_densidade <-
gerar_resultados_Distance(
dados = modelos_cutias_year,
resultado_selecao_modelos = melhor_modelo_cutias_year,
tipo_de_resultado = "densidade",
estratificacao = TRUE
)
resultados_densidade
resultados_densidade |>
dplyr::filter(Rotulo != "Total") |>
dplyr::mutate(ano = as.integer(Rotulo)) |>
ggplot2::ggplot() +
ggplot2::aes(
x = ano,
y = `Estimativa de densidade`
) +
ggplot2::geom_line() +
ggplot2::facet_wrap(facets = ggplot2::vars(Modelo)) +
ggplot2::theme_minimal()
0.1.3.1.5.1.1 Dados Globais
# ajustando a função de detecção half-normal para um truncamento de 10% dos dados
cutias_distance_year_hn <- cutias_year_distance |>
ajustar_modelos_Distance(
funcao_chave = "hn",
termos_ajuste = "cos",
truncamento = "10%")
0.1.3.1.5.1.2 2015
# ajustando a função de detecção half-normal para um truncamento de 10% dos dados
cutias_2015_distance_hn <- cutias_year_distance |>
dplyr::filter(year == 2015) |>
ajustar_modelos_Distance(
funcao_chave = "hn",
termos_ajuste = "cos",
truncamento = "10%")
0.1.3.1.5.1.3 2016
# ajustando a função de detecção half-normal para um truncamento de 10% dos dados
cutias_2016_distance_hn <- cutias_year_distance |>
dplyr::filter(year == 2016) |>
ajustar_modelos_Distance(
funcao_chave = "hn",
termos_ajuste = "cos",
truncamento = "10%")
0.1.3.1.5.1.4 2017
# ajustando a função de detecção half-normal para um truncamento de 10% dos dados
cutias_2017_distance_hn <- cutias_year_distance |>
dplyr::filter(year == 2017) |>
ajustar_modelos_Distance(
funcao_chave = "hn",
termos_ajuste = "cos",
truncamento = "10%")
0.1.3.1.5.1.5 2018
# ajustando a função de detecção half-normal para um truncamento de 10% dos dados
cutias_2018_distance_hn <- cutias_year_distance |>
dplyr::filter(year == 2018) |>
ajustar_modelos_Distance(
funcao_chave = "hn",
termos_ajuste = "cos",
truncamento = "10%")
0.1.3.1.5.1.6 2019
# ajustando a função de detecção half-normal para um truncamento de 10% dos dados
cutias_2019_distance_hn <- cutias_year_distance |>
dplyr::filter(year == 2019) |>
ajustar_modelos_Distance(
funcao_chave = "hn",
termos_ajuste = "cos",
truncamento = "10%")
0.1.3.1.5.1.7 2020
# ajustando a função de detecção half-normal para um truncamento de 10% dos dados
cutias_2020_distance_hn <- cutias_year_distance |>
dplyr::filter(year == 2020) |>
ajustar_modelos_Distance(
funcao_chave = "hn",
termos_ajuste = "cos",
truncamento = "10%")
0.1.3.1.5.1.8 2021
# ajustando a função de detecção half-normal para um truncamento de 10% dos dados
cutias_2021_distance_hn <- cutias_year_distance |>
dplyr::filter(year == 2021) |>
ajustar_modelos_Distance(
funcao_chave = "hn",
termos_ajuste = "cos",
truncamento = "10%")
modelo_cutias_estrat_year <- comparar_aic_modelo_estratificado(
cutias_distance_year_hn,
cutias_2015_distance_hn,
cutias_2016_distance_hn,
cutias_2017_distance_hn,
cutias_2018_distance_hn,
cutias_2019_distance_hn,
cutias_2020_distance_hn,
cutias_2021_distance_hn,
nome_modelos = c(
"Global",
"2015",
"2016",
"2017",
"2018",
"2019",
"2020",
"2021"
)
)
modelo_cutias_estrat_year
modelos_cutias_estrat <- gerar_lista_modelos_selecionados(
cutias_distance_year_hn,
cutias_2015_distance_hn,
cutias_2016_distance_hn,
cutias_2017_distance_hn,
cutias_2018_distance_hn,
cutias_2019_distance_hn,
cutias_2020_distance_hn,
cutias_2021_distance_hn,
nome_modelos_selecionados = modelo_cutias_estrat
)
plotar_funcao_deteccao_modelos_selecionados(modelos_cutias_estrat)